package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import vista.VentanaPrincipal;

import modelo.Colaborador;
import modelo.GrupoColaborativo;
import modelo.Laboratorio;
import modelo.LineaDeInvestigacion;
import modelo.Proyecto;
import modelo.Tematica;


public class ControladorPrincipal implements ActionListener {

	private Laboratorio laboratorio;
	private VentanaPrincipal ventanaprincipal;
	private Proyecto proyecto;
	private LineaDeInvestigacion linea;
	private GrupoColaborativo grupo;
	
	
			
	
	public  ControladorPrincipal(){
		ventanaprincipal= new VentanaPrincipal();
		ventanaprincipal.setLocationRelativeTo(null);
		ventanaprincipal.setVisible(true);	
		ventanaprincipal.agregarListener(this);
		this.laboratorio = new Laboratorio();
		proyecto = new Proyecto();
		//cargarGrupo();
		//cargarTematicas();
		}


	@Override
	public void actionPerformed(ActionEvent even) {
		ControladorProyecto cp;
		ControladorColaborador cc;
		ControladorGrupo cg;
		ControladorProducto cprod;
		ControladorTematica ct;
		ControladorLineasInvestigacion cli;
		ControladorVentanaListadoGrupos cvlg;
		ControladorVentanaListadoMacro cvm;
		
		//Si quiere ir a registrar proyecto
		if(even.getActionCommand().equalsIgnoreCase("Proyecto")){
		  cp = new ControladorProyecto (laboratorio);
		}
		if (even.getActionCommand().equalsIgnoreCase("Colaborador")){
		  cc = new ControladorColaborador (laboratorio);}
		
		if (even.getActionCommand().equalsIgnoreCase("Grupo Colaborativo")){
			cg = new ControladorGrupo(laboratorio);
		}
		if( even.getActionCommand().equalsIgnoreCase("Producto"))
		{
			cprod = new ControladorProducto(proyecto, laboratorio);
		}
		if (even.getActionCommand().equalsIgnoreCase("Tematica")){
			if(laboratorio.contarLineas() != 0){
				ct = new ControladorTematica(laboratorio);
			}
			else {
				ventanaprincipal.mostrarMensaje("ERROR! Debe incluir al menos una linea de Investigacion");
			}
			
		}
		if (even.getActionCommand().equalsIgnoreCase("Linea de Investigacion")){
			cli = new ControladorLineasInvestigacion (laboratorio);
		}
		if (even.getActionCommand().equalsIgnoreCase("Listado Lineas de Investigacion")){
			cli = new ControladorLineasInvestigacion (laboratorio);
		}	
		if(even.getActionCommand().equalsIgnoreCase("Listado De Grupos Existentes")){
			cvlg = new ControladorVentanaListadoGrupos(laboratorio,grupo);
		}
		if (even.getActionCommand().equalsIgnoreCase("Listado de Proyectos")){
			cvm = new ControladorVentanaListadoMacro(laboratorio);
		}
	}
	
	
	
	/*public void cargarGrupo(){
        try{
            // Abrimos el archivo
            FileInputStream fstream = new FileInputStream("Grupo.txt");
            // Creamos el objeto de entrada
            DataInputStream entrada = new DataInputStream(fstream);
            // Creamos el Buffer de Lectura
            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
            //Lo que va a leer de grupo
            
            String codigo;
            String nombre;
            String simbolo;
            char x;
            
            // lo que va a leer de cada colaborador de cada grupo
            
             	 String cedula;
            	 String nombrec;
            	 String apellido;
            	 String sexo;
            	 String dia;
            	 String mes;
            	 String anno;
            	 String telefono;
            	 String email;
            	 String tipo;
            	 char estatus;
            	 int i=0;
            	
            	         
            // Leer el archivo Linea por linea
            
            //Primer ciclo lee los datos del grupo 
            	 
            	 simbolo = buffer.readLine(); 
            	         	 
            	 
            while ((simbolo.equals("*"))) {
            	
            	GrupoColaborativo gc = new GrupoColaborativo();
            	
            	System.out.println("inicio primer while");
            	codigo = buffer.readLine();
            	nombre = buffer.readLine();
            	estatus = 'A';
            	
            	gc.setCodigoGrupo(codigo);
        		gc.setNombreGrupo(nombre);
        	//	gc.setStatus(estatus);
            		            	 
            	 //Segundo Ciclo lee los datos de los integrantes de cada grupo
            	 cedula = buffer.readLine();
            	 while ((!cedula.equals("*"))){
            		
            		Colaborador colaborador = new Colaborador();
            	 	nombrec = buffer.readLine();
            		apellido = buffer.readLine();
            		sexo = buffer.readLine();
            		dia = buffer.readLine();
            		mes = buffer.readLine();
            		anno = buffer.readLine();
            		telefono = buffer.readLine();
            		email = buffer.readLine();
            		tipo = buffer.readLine();
            		estatus = 'A';
            		
            		colaborador.setCedula(cedula);
            		colaborador.setNombre(nombrec);
            		colaborador.setApellido(apellido);
            		colaborador.setSexo(sexo);
/*            		colaborador.setDia(dia);
            		colaborador.setMes(mes);
            		colaborador.setAnno(anno);
            		colaborador.setTelefono(telefono);
            		colaborador.setEmail(email);
            		colaborador.setTipoColaborador(tipo);
            	//	colaborador.setEstatus(estatus);
            		
            		laboratorio.agregarColaborador(colaborador);		            		
            		gc.incluirColaborador(colaborador);
            		gc.setcolResponsable(colaborador);
            		cedula = buffer.readLine();	  		
            		System.out.println("Pas� integrante");
            		System.out.println(cedula);
            		
            	 }//Fin del while de colaboradores
            	 	
            	 
                // Creamos el objeto Grupo
            	 laboratorio.agregarGrupo(gc);
            	 
            		
            	System.out.println("Pas� Grupo");
            	 simbolo = buffer.readLine(); 
                 System.out.println(simbolo);
            }// Cerramos el archivo
            entrada.close();
           //System.out.println(simbolo);
        }catch (Exception e){ //Catch de excepciones
            System.err.println("Ocurrio un error: " + e.getMessage());
          
        }
	}// Fin de Cargar Grupo

	
	
	
	
	
	
	
	//
	public void cargarTematicas(){
        try{
            // Abrimos el archivo
            FileInputStream fstream = new FileInputStream("Tematicas.txt");
            // Creamos el objeto de entrada
            DataInputStream entrada = new DataInputStream(fstream);
            // Creamos el Buffer de Lectura
            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
           
            
            //Lo que va a leer de linea de investigacion
            
            String nombre;
            String codigo;
            String simbolo;
            
            
            // lo que va a leer de cada tematica
            
             	 String codigotematica;
            	 String descripciontematica;
            
            	 int i=0;
            	
            	         
            // Leer el archivo Linea por linea
            
            //Primer ciclo lee los datos de la linea
            	 
            	 simbolo = buffer.readLine(); 
            	         	 
            	 
            while ((simbolo.equals("*"))) {
            	LineaDeInvestigacion li = new LineaDeInvestigacion();
                       	
            	System.out.println("inicio primer while");
            	nombre = buffer.readLine();
            	codigo = buffer.readLine();
            	
            	li.setNombre(nombre);
            	li.setCodigo(codigo);
            
            		            	 
            	 //Segundo Ciclo lee los datos de las tematicas
            		codigotematica = buffer.readLine();
            	 while ((!codigotematica.equals("*"))){
            		
            		 Tematica tematica = new Tematica();
            		 
            	 	descripciontematica = buffer.readLine();
            		
            	 	tematica.setCodigo(codigotematica);
            	 	tematica.setDescripcion(descripciontematica);
            	 	tematica.setLinea(li);
            		
            	 	li.agregarTematica(tematica);
            	 	
            		System.out.println("Paso tematica");
            		System.out.println(codigotematica);
            		codigotematica = buffer.readLine();
            	 }//Fin del while de colaboradores
            	 	
            	 
                // Creamos el objeto Grupo
            	 laboratorio.agregarLinea(li);
            	            	 
            		
            	System.out.println("Paso linea");
            	 simbolo = buffer.readLine(); 
                 System.out.println(simbolo);
            }// Cerramos el archivo
            entrada.close();
           //System.out.println(simbolo);
        }catch (Exception e){ //Catch de excepciones
            System.err.println("Ocurrio un error: " + e.getMessage());
          
        }
	}// Fin de Cargar Lineas y Tematicas
	
	*/
	
	
}
